package main

import (
	"fmt"
	"math"
	"github.com/PaesslerAG/gval"
)

func main() {
	// 创建一个自定义的 gval 语言环境，添加 abs 函数
	language := gval.Full(
		gval.Function("abs", func(args ...interface{}) (interface{}, error) {
			if len(args) != 1 {
				return nil, fmt.Errorf("abs function expects exactly one argument")
			}
			// 将参数转换为 float64 类型
			arg, ok := args[0].(float64)
			if !ok {
				return nil, fmt.Errorf("abs function expects a numeric argument")
			}
			// 使用 math.Abs 计算绝对值
			return math.Abs(arg), nil
		}),
	)

	// 定义要计算的表达式
	expression := "abs(-10)*11"

	// 使用自定义的语言环境求值
	value, err := language.Evaluate(expression, nil)
	if err != nil {
		fmt.Println("Error evaluating expression:", err)
		return
	}

	// 输出结果
	fmt.Println("Absolute value:", value)
}